package com.tchhy.provider.service.healthy

import com.tchhy.provider.data.common.BaseResp
import com.tchhy.provider.data.healthy.FamilyItem
import com.tchhy.basemodule.basedata.PeopleInfoEntity
import com.tchhy.provider.data.common.BindPh
import com.tchhy.network.retrofit.entity.request.PasswordVO
import com.tchhy.provider.data.common.EmptyResp
import com.tchhy.provider.data.healthy.data.MonthPeriod
import com.tchhy.provider.data.healthy.request.*
import com.tchhy.provider.data.healthy.response.*
import com.tchhy.provider.data.partner.request.NextNoticeReq
import com.tchhy.provider.data.partner.response.DataListRes
import io.reactivex.Observable

/**
 * @author: admin
 * @date: 2019/8/20
 * @des:
 *
 **/
interface HealthyService {


    /**
     * @description 获取粉丝列表
     * @param
     * @return
     */
    fun fetchFansList(
        authorId: String,
        pageNum: Int, pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentPeopleHeadSummary>>>


    /**
     * @description 获取经期列表
     * @param
     * @return
     */
    fun fetchMonthPeriod(familyRelationId: String): Observable<BaseResp<ArrayList<MonthPeriod>>>


    /**
     * @description 保存经期列表
     * @param
     * @return
     */
    fun saveMonthPeriod(monthPeriod: MonthPeriod): Observable<EmptyResp>


    fun complaintUseFeedback(useComplaint: UseComplaint): Observable<EmptyResp>
    /**
     * @description 判断发布内容权限
     * @param
     * @return
     * @author admin
     * @time 2019/10/30
     */
    fun contentAuthority(
    ): Observable<EmptyResp>


    /**
     * @description 获取关注用户列表
     * @param
     * @return
     */
    fun fetchFollowList(
        authorId: String,
        pageNum: Int, pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentPeopleHeadSummary>>>

    /**
     * 给用户推荐内容
     */

    fun deletePublishContent(
        contentId: String
    ): Observable<EmptyResp>

    /**
     * @description 关注内容
     */
    fun fetchFocusContents(
        type: Int,
        familyRelationId: String?,
        authorId: String?,
        healthIndex: ArrayList<String>?,
        pageNum: Int,
        pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * 根据标签火圈内容
     */
    fun fetchContentsByTag(
        tag: String,
        pageNum: Int,
        pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * @description 获取兴趣标签
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchTag(): Observable<BaseResp<ArrayList<InterestEntry>>>

    /**
     *判断当前用户是否填写兴趣标签
     */
    fun checkUserAddTagResult(): Observable<BaseResp<Boolean>>

    /**
     * @description新增标签
     * */
    fun addTag(addMyFavoriteTag: AddMyFavoriteTag): Observable<BaseResp<Boolean>>

    /**
     * LAST_WATCH_CONTENTS
     */
    fun lastContents(): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * 判断当前用户是否关注过其他用户
     */
    fun isFollowPeople(): Observable<BaseResp<Boolean>>

    /**
     * 给用户推荐内容
     */
    fun recommendContent(
        familyId: String,
        pageNum: Int,
        pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * 收藏的内容
     */
    fun fetchCollectContents(
        pageNum: Int,
        pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * @description 我看过的内容
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    fun fetchlastWatchContent(
        pageNum: Int,
        pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>


    /**
     * @description 内容操作
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    fun contentOpeartion(contentOperationReq: ContentOperationReq): Observable<EmptyResp>

    /**
     * 获取最后一条发布内容
     */
    fun getLastContent(): Observable<BaseResp<ContentBaseEntity>>

    /**
     * 获取健康指数
     */
    fun fetchHealthIndex(id: String): Observable<BaseResp<ArrayList<String>>>

    /**
     * 获取健康指数详情
     */
    fun getHealthScoreDetail(
        familyRelationId: Long
    ): Observable<BaseResp<HealthScoreDetailRes>>

    /**
     * 同城推荐
     */
    fun fetchLocalCityContent(
        type: Int,
        areaId: String,
        lat: String,
        lng: String,
        pageNum: Int,
        pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * @description 查看我所有发布的内容
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    fun fetchMyContent(pageNum: Int, pageSize: Int): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * @description 搜索标签
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    fun searchTag(keyWord: String?): Observable<BaseResp<SearchTagRes>>

    /**
     * @description 新增多媒体内容
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    fun addMutiMedia(contentBaseEntity: ContentBaseEntity): Observable<EmptyResp>

    /**
     * @description 关闭聊天
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    /*fun closeChat(
        closeChatReq: CloseChatReq
    ): Observable<EmptyResp>*/

    /**
     * @description 呼叫药箱
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    /*fun callMedicienChest(
        medicineVideoConversationReq: MedicineVideoConversationReq
    ): Observable<EmptyResp>*/

    /**
     * @description 登录
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun login(loginReq: LoginReq): Observable<BaseResp<PeopleInfoEntity>>

    fun fetchAllGroupId(groupId: String): Observable<BaseResp<ArrayList<FriendInfoRes>>>


    /**
     * app添加药箱留言
     */
    fun addMedicineChestRemindMsg(addMedicineRemainReq: AddMedicineRemainReq): Observable<EmptyResp>

    /**
     * 投诉圈子
     */
    fun complaintGroup(complaintCircleReq: ComplaintCircleReq): Observable<BaseResp<Any>>


    /**
     * 举报好友
     */
    fun complaintFriend(complaintFriendReq: ComplaintFriendReq): Observable<EmptyResp>


    /**
     * @description 获取群好友信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun completeInfo(completeUserInfoVO: CompleteUserInfoVO): Observable<BaseResp<PeopleInfoEntity>>

    /**
     * @description 添加好友
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun addFriend(addFriendReq: AddFriendReq): Observable<EmptyResp>

    /**
     * @description 修改群简介
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun changeCircleSummary(updateCircleMetaInfoReq: UpdateCircleMetaInfoReq): Observable<EmptyResp>

    /**
     * @description 我的圈子
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchMyCircle(): Observable<BaseResp<ArrayList<CircleDisplayItem>>>

    /**
     * @description 我的朋友
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchMyFriend(
        imUserId: String,
        medicineBoxId: String
    ): Observable<BaseResp<ArrayList<MyFriendItem>>>

    /**
     * @description 获取好友信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun fetchFriendInfo(imUserId: String): Observable<BaseResp<ArrayList<FriendInfoRes>>>

    /**
     * @description 获取好友信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun fetchFriendInCircleInfo(
        imUserId: String,
        groupIdIm: String
    ): Observable<BaseResp<ArrayList<FriendInfoRes>>>

    /**
     * @description 全部圈子
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun fetchAllCircles(
        lat: Double?,
        lng: Double?,
        pageNum: Int,
        pageSize: Int
    ): Observable<BaseResp<DataListRes<CircleDisplayItem>>>

    /**
     * @description 推荐圈子
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun recommendCircles(
    ): Observable<BaseResp<ArrayList<CircleDisplayItem>>>

    /**
     * @description 搜索附近圈子
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun searchNearbyCircle(
        lat: Double?, lng: Double?,
        search_key: String
    ): Observable<BaseResp<ArrayList<CircleDisplayItem>>>

    /**
     * @description 获取圈子标签列表
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun getCircleTag(
    ): Observable<BaseResp<ArrayList<CircleTagEntity>>>

    /**
     * @description 退出圈子
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun logoutCircle(
        groupIdIm: String
    ): Observable<EmptyResp>

    /**
     * @description 推荐好友
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchRecommendFriends(): Observable<BaseResp<ArrayList<RecommendFriendRes>>>


    /**
     * @description 修改群名称
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun changCircleName(updateCircleMetaInfoReq: UpdateCircleMetaInfoReq): Observable<EmptyResp>

    /**
     * @description 获取好友申请列表
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun getFriendApplyList(
        imUserId: String, pageNum: Int,
        pageSize: Int
    ): Observable<BaseResp<DataListRes<FriendApplyItem>>>


    /**
     * @description 同意好友申请以及群申请
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun agreeFriendApply(
        agreeFriendApplyReq: AgreeFriendApplyReq
    ): Observable<EmptyResp>

    /**
     * @description 创建群
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun createCircle(createCircleReq: CreateCircleReq): Observable<BaseResp<CircleDetailRes>>

    /**
     * @description 加入圈子
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun joinCircle(groupIdIm: String): Observable<EmptyResp>

    /**
     * @description 修改群个人名称
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun updateNickNameInCircle(updateCircleMemberNameReq: UpdateCircleMemberNameReq): Observable<EmptyResp>

    /**
     * @description 重置密码
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun forgetPassword(passwordVO: PasswordVO): Observable<EmptyResp>

    /**
     * @description 微信绑定
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun bindphone(bindPh: BindPh): Observable<BaseResp<PeopleInfoEntity>>

    /**
     * @description 发送验证码
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun sendCaptcha(smsVO: SmsVO): Observable<EmptyResp>

    /**
     * @description 修改IM备注名
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun updateFriendRemarkName(updateFriendRemarkReq: UpdateFriendRemarkReq): Observable<EmptyResp>

    /**
     * @description 邀请好友入群
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun inviteFriendsInCircle(
        inviteFriendReq: InviteFriendReq
    ): Observable<EmptyResp>

    /**
     * @description 删除群中好友
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun removeFriendInCircle(
        removeFriendReq: RemoveFriendReq
    ): Observable<EmptyResp>


    /**
     * @description 校验验证码
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun checkCaptcha(checkCaptchaReq: CheckCaptchaReq): Observable<BaseResp<CheckCaptchaRes>>

    /**
     * @description 发送验证码
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun sendCaptcha(captchaReq: CaptchaReq): Observable<EmptyResp>

    /**
     * @description 获取家庭列表
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchAllFamily(id: String): Observable<BaseResp<ArrayList<FamilyItem>>>

    /**
     * @description 获取im个人主页
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun getImInfo(
        imUserId: String,
        familyId: String
    ): Observable<BaseResp<FriendInfoNewRes>>

    /**
     * @description 关注用户
     * @param
     * @return
     */
    fun followPeople(
        focusPeopleReq: FocusPeopleReq
    ): Observable<EmptyResp>

    /**
     * @description 获取个人主页的内容列表
     * @param
     * @return
     */
    fun fetchPeopleContentList(
        authorId: String, type: Int, pageNum: Int, pageSize: Int
    ): Observable<BaseResp<DataListRes<PersonContentSummary>>>

    /**
     * @description 添加举报内容
     * @param
     * @return
     */
    fun addComplaintContent(complaintContent: ComplaintContent): Observable<BaseResp<Boolean>>


    /**
     * @description 根据用户主键获取关注数量 */
    fun fetchAllFansFocusNum(): Observable<BaseResp<UserFansOrFacusNumEntity>>


    /**
     * @description 新增家庭成员
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun joinFamily(familyMemberShipReq: FamilyMemberShipReq): Observable<BaseResp<ActiveChestRes>>

    /**
     * @description 短信提醒创建账号
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun addUserBySms(id: String, phone: String, code: String): Observable<EmptyResp>

    /**
     * @description 获取家庭个人详情
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchFamilyUserInfo(id: String): Observable<BaseResp<PersonDetailInfoRes>>

    /**
     * @description 编辑个人详情
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun updateProfileDetail(editUserProfile: EditUserProfile): Observable<EmptyResp>

    /**
     * @description 修改家庭名称
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun setFamilyName(editId: Long, familyId: String, familyName: String): Observable<EmptyResp>

    /**
     * @description 激活药箱
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun activeMedicineBox(activeChestReq: ActiveChestReq): Observable<BaseResp<ActiveMedicineRes>>

    /**
     * @description 设置默认家庭
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun setDefaultFamily(editId: Long, familyId: String, id: Long): Observable<BaseResp<Long>>

    /**
     * @description 解除药箱关系
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun deleteMemberOfChest(id: String): Observable<EmptyResp>

    /**
     * @description 获取药箱详情
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchMedicineBox(editId: Long, medicineCode: String): Observable<BaseResp<MedicineBoxInfo>>

    /**
     * @description 获取家庭成员列表
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchAllFamilyMember(
        editId: Long,
        familyId: String,
        id: Long
    ): Observable<BaseResp<ArrayList<FamilyMemberShipItem>>>

    /**
     * @description 通知药箱二维码扫描成功
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun notifyMedicineBox(
        timeCode: String,
        editId: Long,
        medicineCode: String
    ): Observable<EmptyResp>

    /**
     * @description 通过扫描添加家庭成员
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun addFamilyMemberByScan(activeFamilyMemberByScan: ActiveFamilyMemberByScan): Observable<BaseResp<ActiveChestRes>>

    /**
     * @description 绑定药箱
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun bindingMedicine(
        timeCode: String,
        editId: Long,
        medicineCode: String,
        type: Int
    ): Observable<EmptyResp>

    /**
     * @description 获取圈子详情
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun getCircleDetail(
        groupIdIm: String
    ): Observable<BaseResp<CircleDetailRes>>

    /**
     * @description 修改备注名
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun updateRemarkName(updateRemarkNameReq: UpdateRemarkNameReq): Observable<EmptyResp>


    /**
     * @description 体重最近7次记录
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchWeightRecordList(
        editId: Long,
        familyRelationId: String
    ): Observable<BaseResp<ArrayList<WeightItemRes>>>


    /**
     * @description 保存身高体重
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun saveWeightRecord(weightItemReq: WeightItemReq): Observable<EmptyResp>


    /**
     * @description 步数最近7次记录
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchStepRecordList(
        editId: Long,
        familyRelationId: Long
    ): Observable<BaseResp<ArrayList<StepRecordRes>>>


    /**
     * @description 保存步数
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun saveStepRecord(stepRecordRes: StepRecordRes): Observable<EmptyResp>


    /**
     * @description 获取用户家庭排行
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchRankByStep(
        editId: Long,
        familyRelationId: Long
    ): Observable<BaseResp<ArrayList<FamilyMemberRankItem>>>

    /**
     * @description 搜索用户
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun searchFriend(param: String): Observable<BaseResp<MyFriendItem>>

    /**
     * @description 获取血压最近记录
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchBloodPressureRecordList(
        editId: Long,
        familyRelationId: Long
    ): Observable<BaseResp<ArrayList<BloodPressureItemRes>>>

    /**
     * @description 保存血压
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun saveBloodPressureRecord(bloodPressureReq: BloodPressureReq): Observable<EmptyResp>

    /**
     * @description 获取血糖最近记录
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchBloodSugarRecordList(
        editId: Long,
        familyRelationId: Long
    ): Observable<BaseResp<ArrayList<BloodSugarItem>>>

    /**
     * @description 保存血糖
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun saveBloodSugarRecord(bloodSugarReq: BloodSugarReq): Observable<EmptyResp>


    /**
     * @description app用户健康档案
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchUserHealthData(
        familyRelationId: String
    ): Observable<BaseResp<HealthFileDataRes>>

    /**
     * @descriptionapp app首页用户画像
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchMainPageUserPortrait(
        familyRelationId: String
    ): Observable<BaseResp<ArrayList<MainPageUserInfo>>>


    /**
     * @description 健康记录分页
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchHealthRecordList(
        editId: Long, familyRelationId: String, pageNum: Int, pageSize: Int
    ): Observable<BaseResp<DataListRes<HealthRecordItem>>>


    /**
     * @description 手动增加健康记录
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun addHealthRecord(healthRecordItem: HealthRecordItem): Observable<EmptyResp>

    /**
     * @description 健康评估问卷列表
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun fetchQuestionList(
        editId: Long,
        familyRelationId: Long
    ): Observable<BaseResp<ArrayList<QuestionItem>>>

    /**
     * @description 取消关注
     * @param
     * @return
     */
    fun cancelFocus(
        authorId: String,
        followAuthorId: String
    ): Observable<EmptyResp>

    /**
     * @description 获取是否可以一键补药
     */
    fun getIsTonic(
        kitNo: String
    ): Observable<BaseResp<Boolean>>

    /**
     * @description 一键补药
     */
    fun oneKeySupplement(
        oneKeySupplementReqInfo: OneKeySupplementReqInfo
    ): Observable<EmptyResp>

    /**
     * @description 获取分类
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun fetchCategoryList(
        editId: String,
        coding: String,
        type: String?
    ): Observable<BaseResp<ArrayList<MedicineCategoryItem>>>

    /**
     * @description 根据69码获取药品信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun fetchMedicineInfoByScan(editId: String, barCode: String): Observable<BaseResp<MedicineInfo>>


    /**
     * @description 根据药品名称获取药品信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun fetchMedicineInfoByName(
        editId: String, drugsName: String, pageNum: Int,
        pageSize: Int
    ): Observable<BaseResp<DataListRes<MedicineInfo>>>


    /**
     * @description 返回全部药品分类
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun fetchAllMedicineCategory(editId: String): Observable<BaseResp<ArrayList<MedicineTypeRes>>>

    /**
     * @description 药品详情
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun getMedicineDetail(
        medicineChestNo: String, medicineId: String, type: Int
    ): Observable<BaseResp<MedicineInfo>>

    /**
     * @description 药物展示公共接口
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    fun getMedicineListDetail(
        coding: String, key: String?, medicineTypeCode: String?, type: String?
    ): Observable<BaseResp<MedicinesSourceList>>


    /**
     * @description 添加自储药
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun addStockMedicine(medicineInfo: MedicineReqInfo): Observable<EmptyResp>


    /**
     * @description 得到所有以及分页查询药品
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchAllMedicines(
        editId: String, medicineName: String?,
        pageNum: Int, pageSize: Int, typeName: String
    ): Observable<BaseResp<DataListRes<MedicineEntity>>>

    /**
     * @description 删除自储药
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun deleteUserMedicine(
        esId: String, id: String
    ): Observable<EmptyResp>

    /**
     * @description 获得首次配药或者推荐用药的json
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun fetchMedicationList(
        editId: String, familyId: String?, meetId: String?, type: Int
    ): Observable<BaseResp<ArrayList<MedicineDosageEntity>>>


    /**
     * @description 获得首次配药或者推荐用药的json
     * @param
     * @return
     * @author admin
     * @time 2019/8/20
     */
    fun setFirstDosage(firstDosageReq: FirstDosageReq): Observable<BaseResp<ArrayList<String>>>

    /**
     * @description 获取药箱连接状态
     * @param
     * @return
     * @author admin
     * @time 2019/10/16
     */
    fun getMedicineConnectionStatus(familyId: String): Observable<BaseResp<KitConnectionStatusRes>>

    /**
     * @description 用药提醒吃药接口
     * @param
     * @return
     * @author admin
     * @time 2019/10/22
     */
    fun takeMedicine(takeMedicineReq: TakeMedicineReq): Observable<EmptyResp>


    /**
     * @description 用药提醒终止服药接口
     * @param
     * @return
     * @author admin
     * @time 2019/10/22
     */
    fun endTakeMedicine(endTakeMedicineReq: EndTakeMedicineReq): Observable<EmptyResp>


    fun getFamilyMember(
        familyId: String,
        id: String
    ): Observable<BaseResp<ArrayList<FamilyMemberData>>>

    /**
     * @description 用药提醒获取用药详情
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    fun getPlanDetails(
        appMedicationTime: String,
        medicationPlanId: String
    ): Observable<BaseResp<ArrayList<TakeMedicineRes>>>

    /**
     * 用药提醒判断当前提醒是否可以延后
     */
    fun judgeNextMedicationTime(nextNoticeReq: NextNoticeReq): Observable<EmptyResp>

    fun calculateMedicationPlan(planData: MedicinePlanReq): Observable<BaseResp<ArrayList<DrinkDrugsPlanData>>>

    fun createMedicationPlan(data: CreateMedicationPlanData): Observable<BaseResp<String>>

    fun getKitTemperatureHumidity(medicinalCode: String): Observable<BaseResp<KitStatusRes>>

    fun getClassification(
        coding: String,
        type: String
    ): Observable<BaseResp<ArrayList<DrugClassificationRes>>>

    fun quickMedicineCommonList(
        coding: String,
        key: String?,
        medicineTypeCode: String,
        type: String?
    ): Observable<BaseResp<AllMedicationRes>>

    /**
     * 检查版本更新
     */
    fun checkUpdate(): Observable<EmptyResp>

    /**
     * 获取银行卡号所属银行
     */
    fun getCardNumBelongToBank(cardNumber: String): Observable<BaseResp<String>>

    /**
     * 添加银行卡
     */
    fun addBankCard(addBankCardReq: AddBankCardReq): Observable<EmptyResp>


    /**
     * @description 是否允许换药
     */
    fun getIsAllowChangeMedicine(chestCode: String): Observable<BaseResp<Boolean>>


    /**
     * 获得更换药品类型列表
     */
    fun getMedicineTypeList(
        chestCode: String,
        typeCode: String?
    ): Observable<BaseResp<MedicineChangeTypeListRes>>

    /**
     * @description 获取商品库的药品信息
     */
    fun getMedicineTarget(
        chestCode: String?,
        size: String?,
        pageNum: Int?,
        pageSize: Int?
    ): Observable<BaseResp<MedicineTargetRes>>

    /**
     * @description 换药订单详情
     */
    fun getChangeMedicineOrderDetail(chestCode: String): Observable<BaseResp<ChangeMedicineOrderDetailRes>>

    /**
     * @description 换药订单列表
     */
    fun getChangeMedicineOrders(
        chestCode: String,
        pageNum: Int,
        pageSize: Int
    ): Observable<BaseResp<ChangeMedicineOrdersRes>>

    /**
     * @description 提交换药
     */
    fun submitChangeMedicine(submitChangeMedicineReq: SubmitChangeMedicineReq): Observable<EmptyResp>

    /**
     * @description 获取目标药品类型
     */
    fun getTargetMedicineType(): Observable<BaseResp<List<TargetMedicineTypeRes>>>

    /**
     * @description 帮助中心
     * @param
     * @return
     * @author admin
     * @time 2020/3/17
     */
    fun getHelpCentreInfo(): Observable<BaseResp<ArrayList<HelpCentreRes>>>

    fun getServiceProtocolList(): Observable<BaseResp<ArrayList<ServiceProtocolRes>>>
    fun getServiceProtocolDetail(agreementId: String): Observable<BaseResp<ServiceProtocolRes>>
    fun getCommontProtocol(agreementId: String): Observable<BaseResp<ServiceProtocolRes>>
    fun addNoDisturbCircle(groupIdIm: String):Observable<BaseResp<Any>>
    fun cancelMesDisturb(groupIdIm: String): Observable<BaseResp<Any>>
    fun getAllDisturbMsgId(): Observable<BaseResp<ArrayList<String>>>
    fun getConsultationTime(): Observable<BaseResp<VipDurationRes>>

    fun isFriend(customerAccount: String): Observable<BaseResp<IsFriendRes>>
}